Storage space at a storage device is presented as a storage volume having at least a logical unit number (LUN) for reading and writing information. A snapshot is a point in time copy of the storage volume. A snapshot is typically created using a pre-designated space for the snapshot. When the snapshot is first created, only meta-data about where original data is stored is copied. No physical copy of the data is done at the time the snapshot is created. Therefore, the creation of the snapshot is almost instantaneous. The snapshot copy then tracks the changing blocks on the original storage volume as writes to the original volume are performed. The original data that is being written to is copied into the designated storage pool that is set aside for the snapshot before original data is overwritten, hence the name “copy-on-write” (or COW).
Before a write is allowed to a block, copy-on-write operation moves the original data block to the snapshot storage. This keeps the snapshot data consistent with the exact time the snapshot was taken. Read requests to the snapshot volume of the unchanged data blocks are redirected to the original volume, while read requests to data blocks that have been changed are directed to the “copied” blocks in the snapshot. Continuous efforts are being made to efficiently execute COW enabled write operations.